package com.kfm.bootdemo.model;

import lombok.Data;

import java.util.List;

@Data
public class Page1<E> {

    // 返回前端的内容
    // 1. 数据（list集合）
    // 2. 当前页码
    // 3. 页码数(数组)
    // 4. hasPrev hasNext 前一个或者下一个按钮是否可以用
    private List<E> data; // 本页的数据
    private int pageNum; // 当前页码
    private long total; // 总数
    private int pageSize; // 当前页面条数
    private int pageCount; // 页数
    private boolean hasNext; // 是否有下一页
    private boolean hasPrev; // 是否有上一页
    private int nextNum; // 下一页的页码
    private int prevNum; // 上一页的页码
    private int[] pageNumbers; // 页码信息

    public Page1(List<E> data, int pageNum, int pageSize, long total) {
        this.data = data;
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
    }

    public int getPageCount() {
        return (int)Math.ceil((double)total / pageSize);
    }
    public boolean getHasNext() {
        return pageNum != getPageCount();
    }
    public boolean getHasPrev() {
        return pageNum != 1;
    }
    public int getNextNum() {
        return pageNum + 1;
    }
    public int getPrevNum() {
        return pageNum - 1;
    }

    public int[] getPageNumbers() {
        // 10 1,2,3,4,5,6,7,8,9,10  5 当前页 前两个 后两个 1,2 3 4,5，6
        int start = 1;
        int end = 5;
        if (getPageCount() > 5) {
            start = pageNum - 2;
            if (start <= 0) {
                start = 1;
            }
            end = pageNum + 2;
            if (end > getPageCount()) {
                end = getPageCount();
            }
        }
        int[] numbers = new int[end - start + 1];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = start + i;
        }
        return numbers;
    }





}
